var url = require('url');

module.exports = options => {
    return async function adminauth(ctx, next) { 

        // 1. 用户没有登录跳转到登录页面
        // 2. 只有登录以后才可以访问后台管理系统
        
        // 全局变量 
        ctx.state.csrf = ctx.csrf;    // egg 加密验证
        ctx.state.prevPage = ctx.request.headers['referer'] // 上一页地址

        var pathname = url.parse(ctx.request.url).pathname;
 
        if (ctx.session.userinfo) { //已登录
            ctx.state.userinfo = ctx.session.userinfo;
   
            var hasAuth = await ctx.service.admin.checkAuth();
            if (hasAuth) {
                // 获取权限列表
                
                ctx.state.asideList = await ctx.service.admin.getAuthList(ctx.session.userinfo.role_id);
                await next();
            } else {
                ctx.body = '没有权限访问当前地址';
            }

        } else { // 未登录
            // 排除不需要做权限判断的页面
            if (pathname == '/admin/login' || pathname=='/admin/doLogin' || pathname=='/admin/verify') {
                await next();
            } else {
                ctx.redirect('/admin/login');
            }
        }
    }
}